home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / SYMBOL / Symbol Processors / Transform / symbol-interpolate < prev    next >
Lisp/Scheme  |  1998-10-23  |  2KB  |  38 lines

  1. symbol-interpolate steps source-pattern target-pattern steps
  2.  
  3. Interpolates between two symbol patterns (only non-transpose symbols allowed). Suitable for calculating intermediate states between patterns, or creating smoothly transforming patterns. Both patterns must be of equal length. The output is in a list form ((x x x) (x x x) ...) where each sublist represents a pattern. Use flatten to make the result as a single list. Examine outputs in Listener and Visualizer. Notice also that both source and target patterns will appear in the output.
  4.  
  5. (symbol-interpolate 
  6.  6 
  7.  (reverse '(a b c d  e f g h  i j k l  m n o p))
  8.  '(a b c d  e f g h  i j k l  m n o p))
  9.  
  10. (flatten (symbol-interpolate 
  11.           6 
  12.           (reverse '(a b c d  e f g h  i j k l  m n o p))
  13.           '(a b c d  e f g h  i j k l  m n o p)))
  14.  
  15. Example on interpolating between 3 patterns
  16.  
  17. Define first 3 patterns.
  18.  
  19. (setq p1 '(a b c d e f g h))
  20. (setq p2 '(a b c d d c b a))
  21. (setq p3 '(h g f e d c b a))
  22.  
  23. Next count interpolations.
  24.  
  25. (setq p1-p2 (symbol-interpolate 8 p1 p2))
  26. (setq p2-p3 (symbol-interpolate 8 p2 p3))
  27.  
  28. Then append interpolations. Note that p1-p2 already contains p2, so the first step must be removed from p2-p3.
  29.  
  30. (setq result (flatten (append p1-p2 (cdr p2-p3))))
  31.  
  32. The pattern lengths must equal, but their ranges can differ. Check out the following. Use symbol-trim to equalize pattern lengths if necessary. See also vector-interpolate.
  33.  
  34. (flatten (symbol-interpolate '(a b c d  a b c d  e f g h  e f g h)
  35.                              '(a b c d  e f g h  i j k l  m n o p)
  36.                              8))
  37.  
  38.